// validate.js - 项目验证脚本
const fs = require('fs');
const path = require('path');

// 检查文件是否存在
function checkFile(filePath) {
  if (fs.existsSync(filePath)) {
    console.log(`✅ ${filePath}`);
    return true;
  } else {
    console.log(`❌ ${filePath} - 文件不存在`);
    return false;
  }
}

// 检查目录是否存在
function checkDir(dirPath) {
  if (fs.existsSync(dirPath)) {
    console.log(`📁 ${dirPath}`);
    return true;
  } else {
    console.log(`❌ ${dirPath} - 目录不存在`);
    return false;
  }
}

// 验证项目结构
function validateProject() {
  console.log('🔍 验证小程序项目结构...\n');
  
  let allValid = true;
  
  // 检查根目录文件
  const rootFiles = [
    'app.js',
    'app.json', 
    'app.wxss',
    'project.config.json',
    'sitemap.json',
    'README.md'
  ];
  
  console.log('📋 根目录文件:');
  rootFiles.forEach(file => {
    if (!checkFile(file)) allValid = false;
  });
  
  // 检查目录
  const dirs = [
    'pages',
    'utils'
  ];
  
  console.log('\n📁 目录结构:');
  dirs.forEach(dir => {
    if (!checkDir(dir)) allValid = false;
  });
  
  // 检查页面文件
  const pages = [
    'pages/login',
    'pages/index', 
    'pages/task',
    'pages/statistics',
    'pages/profile'
  ];
  
  console.log('\n📱 页面文件:');
  pages.forEach(page => {
    if (!checkDir(page)) {
      allValid = false;
      return;
    }
    
    const pageFiles = [
      `${page}.js`,
      `${page}.wxml`, 
      `${page}.wxss`,
      `${page}.json`
    ];
    
    pageFiles.forEach(file => {
      if (!checkFile(file)) allValid = false;
    });
  });
  
  // 检查工具文件
  console.log('\n🛠️ 工具文件:');
  if (!checkFile('utils/util.js')) allValid = false;
  
  console.log('\n' + '='.repeat(50));
  if (allValid) {
    console.log('🎉 项目验证通过！所有必要文件都存在。');
  } else {
    console.log('⚠️ 项目验证失败！请检查缺失的文件。');
  }
  console.log('='.repeat(50));
  
  return allValid;
}

// 运行验证
if (require.main === module) {
  validateProject();
}

module.exports = { validateProject }; 